#include "RAT_Window.h"

namespace RAT_ENGINE
{
	//fixme
	///<summary>
	///Empty Constructor.
	///</summary>
	RAT_Window::RAT_Window() : id(0), name(""), x(0), y(0), width(0), height(0)
	{
	}

	///<summary>
	///Destructor
	///</summary>
	RAT_Window::~RAT_Window()
	{
	}

	///<summary>
	///Initializer. Sets the ID, Name, Position, Width, Height and Full Screen of window.
	///</summary>
	///<param name="argID"> The ID </param>
	///<param name="argName"> The Name </param>
	///<param name="argPosition"> The Position </param>
	///<param name="argWidth"> The Width </param>
	///<param name="argHeight"> The Height </param>
	///<param name="argIsFullScreen"> Whether the Window is full screen </param>
	void RAT_Window::Init(const int argID, const std::string argURL, const std::string argName, 
				  const int argPosX, const int argPosY, const int argWidth, 
				  const int argHeight, RAT_Scene* argScene)
	{
		id = argID;
		url = argURL;
		name = argName;
		x = argPosX;
		y = argPosY;
		width = argWidth;
		height = argHeight;
		scene = argScene;
	}

	void RAT_Window::CleanUp()
	{
	}

	///<summary>
	///Getter for id.
	///</summary>
	///<returns>The id. </returns>
	int RAT_Window::GetID() const
	{
		return id;
	}

	std::string RAT_Window::GetURL() const
	{
		return url;
	}

	///<summary>
	///Getter for name.
	///</summary>
	///<returns>The name. </returns>
	std::string RAT_Window::GetName() const
	{
		return name;
	}

	///<summary>
	///Getter for the X position.
	///</summary>
	///<returns>The X position. </returns>
	int RAT_Window::GetX() const
	{
		return x;
	}

	///<summary>
	///Getter for the Y position.
	///</summary>
	///<returns>The Y position. </returns>
	int RAT_Window::GetY() const
	{
		return x;
	}

	///<summary>
	///Getter for the width.
	///</summary>
	///<returns>The width. </returns>
	int RAT_Window::GetWidth() const
	{
		return width;
	}
	
	///<summary>
	///Getter for the height.
	///</summary>
	///<returns>The height. </returns>
	int RAT_Window::GetHeight() const
	{
		return height;
	}

	RAT_Scene* RAT_Window::GetScene() const
	{
		return scene;
	}


	///<summary>
	///Setter of the name.
	///</summary>
	///<param name="argWidth"> The name </param>
	void RAT_Window::SetName(const std::string argName)
	{
		name = argName;
	}
	
	///<summary>
	///Setter of the X position.
	///</summary>
	///<param name="argPosition"> The X position </param>
	void RAT_Window::SetXPosition(const int argX)
	{
		x = argX;
	}

	///<summary>
	///Setter of the Y position.
	///</summary>
	///<param name="argPosY"> The Y position </param>
	void RAT_Window::SetPosition(const int argY)
	{
		y = argY;
	}
	
	///<summary>
	///Setter of the width.
	///</summary>
	///<param name="argWidth"> The width </param>
	void RAT_Window::SetWidth(const int argWidth)
	{
		width = argWidth;
	}

	///<summary>
	///Setter of the height.
	///</summary>
	///<param name="argHeight"> The heigth </param>
	void RAT_Window::SetHeight(const int argHeight)
	{
		height = argHeight;
	}

	void RAT_Window::PrintIO()
	{
		std::cout << "ID: " << id << "; URL: " << url << "; Name: " << name << "\nPosition: (" << x << ", " << y << "); Width: " 
			<< width << "; Height: " << height << "\nScene: " << scene->GetID() << std::endl;
	}
}